package br.com.pnfp.web.view.tag;

import java.io.IOException;

import javax.servlet.jsp.JspWriter;

import org.apache.commons.beanutils.BeanUtils;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.web.servlet.tags.RequestContextAwareTag;

import br.com.pnfp.web.model.dao.IEntidadeDAO;
import br.com.pnfp.web.model.vo.Entidade;
import br.com.pnfp.web.model.vo.Usuario;

@Configurable
public class ComboEntidadeTag extends RequestContextAwareTag {
	
	private static final long serialVersionUID = -6707142814661922021L;
	
	private String name;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	@Override
	protected int doStartTagInternal() throws Exception {
		JspWriter out = pageContext.getOut();
		
		IEntidadeDAO dao = getRequestContext().getWebApplicationContext().getBean(IEntidadeDAO.class);
		Usuario usuario = (Usuario)pageContext.getSession().getAttribute("usuario");
		
		
		String value = "";
		try {
			Object objForm = pageContext.getRequest().getAttribute("org.apache.struts.taglib.html.BEAN");
			value = BeanUtils.getProperty(objForm, getName());
		} catch(Exception e) {}
		
		StringBuilder combo = new StringBuilder();
		combo.append("<select id='").append(getName()).append("' name='").append(getName()).append("' title='Entidade'>");
		combo.append("<option value=''>Selecione...</option>");
		for(Entidade entidade : dao.consultar(new Entidade(usuario))) {
			combo.append("<option value='").append(entidade.getCodigo()).append("'");
			if(!value.equals("") && entidade.getCodigo().equals(new Integer(value))) {
				combo.append(" selected ");
			}
			combo.append(">");
			combo.append(entidade.getRazaoSocial()).append("</option>");
		}
		combo.append("</select>");
		
		try {
			out.print(combo.toString());
		} catch (IOException e) {
			e.printStackTrace();
		}
		return 0;
	}

}
